/*
 * @lc app=leetcode.cn id=230 lang=golang
 *
 * [230] 二叉搜索树中第K小的元素
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
// 使用中序遍历进行遍历，获取第k个数值

func kthSmallest(root *TreeNode, k int) int {
	tmp := make([]int, 0, k)
	dfs(root, k, &tmp)
	// fmt.Println(tmp, k)
	return tmp[k-1]
}

func dfs(root *TreeNode, k int, tmp *[]int) {
	if len((*tmp)) == k {
		return
	}
	if root != nil {
		dfs(root.Left, k, tmp)

		*tmp = append(*tmp, root.Val)
		dfs(root.Right, k, tmp)
	}
}

// @lc code=end
